// 玩家控制的方块对象构造函数
var mySquareObj = function() {
    this.x; // 方块的x坐标
    this.y; // 方块的y坐标
    this.isLive; // 方块是否存活
    this.l; // 方块的边长
    this.color; // 方块的颜色
    this.toDownSpeed; // 垂直方向速度
    this.toVSpeed; // 水平方向速度
}

var jump_count = 0; // 记录跳跃次数

// 初始化玩家控制的方块
mySquareObj.prototype.init = function() {
    this.isLive = true; // 设置为存活状态
    this.x = 0; // x坐标设置为0
    this.y = 0; // y坐标设置为0
    this.l = 40; // 边长设置为40
    this.toDownSpeed = 0; // 垂直方向速度初始化为0
    this.toVSpeed = 0; // 水平方向速度初始化为0
    this.color = squareColor[0]; // 颜色设置为默认颜色
}

// 控制方块跳跃
mySquareObj.prototype.jump = function() {
    if (this.isLive) {
        this.toDownSpeed = -15; // 设置垂直方向速度
        this.toVSpeed = 2; // 设置水平方向速度
        jump_count++; // 增加跳跃次数
        // 如果方块超出画布宽度，调整位置
        if (this.x + this.l > canWidth) {
            this.x = canWidth - this.l;
        }
    }
}

// 控制方块下落
mySquareObj.prototype.toDown = function() {
    if (this.isLive) {
        // 更新垂直方向速度
        this.toDownSpeed += 9.8 * 1 * 0.06;
        // 更新y坐标
        this.y += this.toDownSpeed;
        // 更新x坐标
        this.x += this.toVSpeed;
        // 如果方块超出画布高度，设置为不存活状态
        if (this.y + this.l > canHeight) {
            this.isLive = false;
        }
    }
}

// 绘制玩家控制的方块
mySquareObj.prototype.draw = function() {
    if (this.isLive) {
        var now = Date.now();
        // 更新颜色变化提示
        if (now - changeColorTime > 1000) {
            changeColorindex = (++changeColorindex) % changeTimeArrays.length;
            var strColor = "" + squareColor[Math.floor(Math.random() * squareColor.length)];
            document.getElementById("colorChangeTime_div").style.color = strColor;
            document.getElementById("colorChangeTime_div").innerHTML = "" + changeTimeArrays[changeColorindex];
            if (changeColorindex == 10) {
                document.getElementById("colorChangeTime_div").style.fontSize = colorChangeTimeW * 0.15 + "px";
                this.color = strColor;
            } else {
                document.getElementById("colorChangeTime_div").style.fontSize = colorChangeTimeW * 0.3 + "px";
            }
            changeColorTime = now;
        }
        // 设置填充颜色
        ctx2.fillStyle = this.color + "";
        // 绘制方块
        ctx2.rect(this.x, this.y, this.l, this.l);
        ctx2.fill();
        // 设置边框样式
        ctx2.lineWidth = 3;
        ctx2.radiusX = 3;
        ctx2.strokeStyle = "#ffffff";
        ctx2.stroke();
        // 如果方块超出画布左侧，设置为不存活状态
        if (this.x < -100) {
            this.isLive = false;
        }
    } else {
        // 游戏结束时重新初始化
        restartInit();
    }
    // 调用下落方法
    this.toDown();
}

// 重新初始化游戏
function restartInit() {
    AnimPX = new Array();
    AnimPY = new Array();
    changeColorindex = 0;
    jump_count = 0;
    document.getElementById("colorChangeTime_div").style.display = "none";
    beginAnim.init();
    beginGame = false;
    gameOver = true;
    lastTime = Date.now();
    document.getElementById("game_title").innerHTML = "方&nbsp;块&nbsp;跳&nbsp;跃";
    document.getElementById("score").style.display = "none";
    document.getElementById("game_title").style.display = "block";
    document.getElementById("login_btn").style.display = "block";
    document.getElementById("login_btn").innerHTML = "再来一次";
    document.getElementById("state").style.display = "block";
    document.getElementById("state").innerHTML = "游戏结束，得分：" + Math.floor(score);
}